package pe.gob.osce.sirenas.dao.convert;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import pe.gob.osce.sirenas.model.FormacionAcademicaDTO;
import pe.gob.osce.sirenas.model.jpa.Auditoria;
import pe.gob.osce.sirenas.model.jpa.FormacionAcademica;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaFormacion;
import pe.gob.osce.sirenas.model.jpa.rectificaciones.HistorialFormacionAcademica;

public class FormacionAcademicaConvert {

	public FormacionAcademicaConvert(){}
	
	
	public static FormacionAcademicaDTO createDTO(FormacionAcademica formacionAcademicaJPA){

		
		FormacionAcademicaDTO objetoDTO=new FormacionAcademicaDTO();
		objetoDTO.setIdFormacionAcademica(formacionAcademicaJPA.getIdFormacionAcademica());
		objetoDTO.setIdFicha(formacionAcademicaJPA.getIdFicha());
		objetoDTO.setIdAreaProfesion(formacionAcademicaJPA.getIdAreaProfesion());
		objetoDTO.setIdCentroEstudios(formacionAcademicaJPA.getIdCentroEstudios());
		objetoDTO.setDescripcionOtroCentro(formacionAcademicaJPA.getDescripcionOtroCentro());
		objetoDTO.setIdPais(formacionAcademicaJPA.getIdPais());
		objetoDTO.setIndGradoObtenido(formacionAcademicaJPA.getIndGradoObtenido());
		objetoDTO.setDescripcionGrado(formacionAcademicaJPA.getDescripcionGrado());
		objetoDTO.setFecEgreso(formacionAcademicaJPA.getFecEgreso());
		objetoDTO.setCodRegistro(formacionAcademicaJPA.getCodRegistro());
		objetoDTO.setEsEditable(false);
		
		objetoDTO.setEstado(formacionAcademicaJPA.getEstado());
		
		return objetoDTO;
	}

	
	public static FormacionAcademicaDTO createFormacionFiscalizadaDTO(FormacionAcademica formacionAcademicaJPA,FiscalizaFormacion fiscalizaFormacionJPA){

		
		FormacionAcademicaDTO objetoDTO=new FormacionAcademicaDTO();
		objetoDTO.setIdFormacionAcademica(formacionAcademicaJPA.getIdFormacionAcademica());
		objetoDTO.setIdFicha(formacionAcademicaJPA.getIdFicha());
		objetoDTO.setIdAreaProfesion(formacionAcademicaJPA.getIdAreaProfesion());
		objetoDTO.setIdCentroEstudios(formacionAcademicaJPA.getIdCentroEstudios());
		objetoDTO.setDescripcionOtroCentro(formacionAcademicaJPA.getDescripcionOtroCentro());
		objetoDTO.setIdPais(formacionAcademicaJPA.getIdPais());
		objetoDTO.setIndGradoObtenido(formacionAcademicaJPA.getIndGradoObtenido());
		objetoDTO.setDescripcionGrado(formacionAcademicaJPA.getDescripcionGrado());
		objetoDTO.setFecEgreso(formacionAcademicaJPA.getFecEgreso());
		objetoDTO.setCodRegistro(formacionAcademicaJPA.getCodRegistro());
		objetoDTO.setEsEditable(false);
		
		objetoDTO.setDescAccion(fiscalizaFormacionJPA.getDescAccion());
		objetoDTO.setDescResultado(fiscalizaFormacionJPA.getDescResultado() );
		
		objetoDTO.setEstado(formacionAcademicaJPA.getEstado());
		
		return objetoDTO;
	}

	public static FormacionAcademica createJPA(FormacionAcademicaDTO formacionAcademicaDTO,Auditoria auditoria){
		
	
		FormacionAcademica objetoJPA=new FormacionAcademica();
		objetoJPA.setIdFormacionAcademica(formacionAcademicaDTO.getIdFormacionAcademica());
		objetoJPA.setIdFicha(formacionAcademicaDTO.getIdFicha());
		objetoJPA.setIdAreaProfesion(formacionAcademicaDTO.getIdAreaProfesion());
		objetoJPA.setIdCentroEstudios(formacionAcademicaDTO.getIdCentroEstudios());
		objetoJPA.setDescripcionOtroCentro(formacionAcademicaDTO.getDescripcionOtroCentro());
		objetoJPA.setIdPais(formacionAcademicaDTO.getIdPais());
		objetoJPA.setIndGradoObtenido(formacionAcademicaDTO.getIndGradoObtenido());
		objetoJPA.setDescripcionGrado(formacionAcademicaDTO.getDescripcionGrado());
		objetoJPA.setFecEgreso(formacionAcademicaDTO.getFecEgreso());
		objetoJPA.setCodRegistro(formacionAcademicaDTO.getCodRegistro());
		objetoJPA.setCodTramite(formacionAcademicaDTO.getCodTramite());
		if(formacionAcademicaDTO.getEstado()!=null){
			objetoJPA.setEstado(formacionAcademicaDTO.getEstado());
		}
				
		return null;
	}
	
	public static List<FormacionAcademicaDTO> createListFormAcademicaDTO(List<FormacionAcademica> listaFormacionAcademicaJPA){
		
		List<FormacionAcademicaDTO> listaObjetoDTO=new ArrayList<FormacionAcademicaDTO>();
		FormacionAcademicaDTO objetoDTO;

		for (FormacionAcademica formacionAcademicaJPA: listaFormacionAcademicaJPA) {
			objetoDTO= new FormacionAcademicaDTO();

			objetoDTO.setIdFormacionAcademica(formacionAcademicaJPA.getIdFormacionAcademica());
			objetoDTO.setIdFicha(formacionAcademicaJPA.getIdFicha());
			objetoDTO.setIdAreaProfesion(formacionAcademicaJPA.getIdAreaProfesion());
			objetoDTO.setIdCentroEstudios(formacionAcademicaJPA.getIdCentroEstudios());
			objetoDTO.setDescripcionOtroCentro(formacionAcademicaJPA.getDescripcionOtroCentro());
			objetoDTO.setIdPais(formacionAcademicaJPA.getIdPais());
			objetoDTO.setIndGradoObtenido(formacionAcademicaJPA.getIndGradoObtenido());
			objetoDTO.setDescripcionGrado(formacionAcademicaJPA.getDescripcionGrado());
			objetoDTO.setFecEgreso(formacionAcademicaJPA.getFecEgreso());
			objetoDTO.setCodRegistro(formacionAcademicaJPA.getCodRegistro());
			objetoDTO.setCodTramite(formacionAcademicaJPA.getCodTramite());
			/**Los registros que vienen de base de datos no son editables*/
			objetoDTO.setEsEditable(false);
			objetoDTO.setEstado(formacionAcademicaJPA.getEstado());
			listaObjetoDTO.add(objetoDTO);
		}
		
		return listaObjetoDTO;
		
	}
	
		public static List<FormacionAcademica> createListFormAcademicaJPA(List<FormacionAcademicaDTO> listaFormacionAcademicaDTO, Auditoria auditoria){
		
		List<FormacionAcademica> listaObjetoJPA=new ArrayList<FormacionAcademica>();
		FormacionAcademica objetoJPA;

		for (FormacionAcademicaDTO formacionAcademicaDTO: listaFormacionAcademicaDTO) {
			objetoJPA= new FormacionAcademica();

			objetoJPA.setIdFormacionAcademica(formacionAcademicaDTO.getIdFormacionAcademica());
			objetoJPA.setIdFicha(formacionAcademicaDTO.getIdFicha());
			objetoJPA.setIdAreaProfesion(formacionAcademicaDTO.getIdAreaProfesion());
			objetoJPA.setIdCentroEstudios(formacionAcademicaDTO.getIdCentroEstudios());
			objetoJPA.setDescripcionOtroCentro(formacionAcademicaDTO.getDescripcionOtroCentro());
			objetoJPA.setIdPais(formacionAcademicaDTO.getIdPais());
			objetoJPA.setIndGradoObtenido(formacionAcademicaDTO.getIndGradoObtenido());
			objetoJPA.setDescripcionGrado(formacionAcademicaDTO.getDescripcionGrado());
			objetoJPA.setFecEgreso(formacionAcademicaDTO.getFecEgreso());	
			objetoJPA.setCodRegistro(formacionAcademicaDTO.getCodRegistro());
			objetoJPA.setCodTramite(formacionAcademicaDTO.getCodTramite());
			if(formacionAcademicaDTO.getEstado()!=null){
				objetoJPA.setEstado(formacionAcademicaDTO.getEstado());
			}
			objetoJPA.setAuditoria(auditoria);
			listaObjetoJPA.add(objetoJPA);
		}
		
		return listaObjetoJPA;
		
	}
		
		public static List<HistorialFormacionAcademica> createListHistorialFormAcademicaJPA(List<FormacionAcademica> listaFormacionAcademica, Auditoria auditoria){
			
			List<HistorialFormacionAcademica> listaObjetoHistorialJPA=new ArrayList<HistorialFormacionAcademica>();
			HistorialFormacionAcademica objetoHistorialJPA;

			for (FormacionAcademica formacionAcademicaJPA: listaFormacionAcademica) {
				objetoHistorialJPA= new HistorialFormacionAcademica();
				objetoHistorialJPA.setFecHistorial(new Date());
				objetoHistorialJPA.setIdFormacionAcademica(formacionAcademicaJPA.getIdFormacionAcademica());
				objetoHistorialJPA.setIdFicha(formacionAcademicaJPA.getIdFicha());
				objetoHistorialJPA.setIdAreaProfesion(formacionAcademicaJPA.getIdAreaProfesion());
				objetoHistorialJPA.setIdCentroEstudios(formacionAcademicaJPA.getIdCentroEstudios());
				objetoHistorialJPA.setDescripcionOtroCentro(formacionAcademicaJPA.getDescripcionOtroCentro());
				objetoHistorialJPA.setIdPais(formacionAcademicaJPA.getIdPais());
				objetoHistorialJPA.setIndGradoObtenido(formacionAcademicaJPA.getIndGradoObtenido());
				objetoHistorialJPA.setDescripcionGrado(formacionAcademicaJPA.getDescripcionGrado());
				objetoHistorialJPA.setFecEgreso(formacionAcademicaJPA.getFecEgreso());
				objetoHistorialJPA.setCodTramite(formacionAcademicaJPA.getCodTramite());
				objetoHistorialJPA.setCodRegistro(formacionAcademicaJPA.getCodRegistro());
				if(formacionAcademicaJPA.getEstado()!=null){
					objetoHistorialJPA.setEstado(formacionAcademicaJPA.getEstado());
				}
				
				objetoHistorialJPA.setAuditoria(auditoria);
				listaObjetoHistorialJPA.add(objetoHistorialJPA);
			}
			
			return listaObjetoHistorialJPA;
			
		}
		
		public static List<FormacionAcademicaDTO> createListHistorialFormAcademicaDTO(List<HistorialFormacionAcademica> listaHistorialFormacionAcademicaJPA){
			
			List<FormacionAcademicaDTO> listaObjetoDTO=new ArrayList<FormacionAcademicaDTO>();
			FormacionAcademicaDTO objetoDTO;

			for (HistorialFormacionAcademica historialFormacionAcademicaJPA: listaHistorialFormacionAcademicaJPA) {
				objetoDTO= new FormacionAcademicaDTO();
				objetoDTO.setIdHistorial(historialFormacionAcademicaJPA.getIdHistorial());
				objetoDTO.setFecHistorial(historialFormacionAcademicaJPA.getFecHistorial());
				objetoDTO.setIdFormacionAcademica(historialFormacionAcademicaJPA.getIdFormacionAcademica());
				objetoDTO.setIdFicha(historialFormacionAcademicaJPA.getIdFicha());
				objetoDTO.setIdAreaProfesion(historialFormacionAcademicaJPA.getIdAreaProfesion());
				objetoDTO.setIdCentroEstudios(historialFormacionAcademicaJPA.getIdCentroEstudios());
				objetoDTO.setDescripcionOtroCentro(historialFormacionAcademicaJPA.getDescripcionOtroCentro());
				objetoDTO.setIdPais(historialFormacionAcademicaJPA.getIdPais());
				objetoDTO.setIndGradoObtenido(historialFormacionAcademicaJPA.getIndGradoObtenido());
				objetoDTO.setDescripcionGrado(historialFormacionAcademicaJPA.getDescripcionGrado());
				objetoDTO.setFecEgreso(historialFormacionAcademicaJPA.getFecEgreso());
				objetoDTO.setCodTramite(historialFormacionAcademicaJPA.getCodTramite());
				objetoDTO.setCodRegistro(historialFormacionAcademicaJPA.getCodRegistro());
				objetoDTO.setEsEditable(false);
				objetoDTO.setEstado(historialFormacionAcademicaJPA.getEstado());
				listaObjetoDTO.add(objetoDTO);
			}
			
			return listaObjetoDTO;
			
		}
	
}
